from PySide6.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsItem, QGraphicsEllipseItem, QGraphicsItemGroup
from PySide6.QtCore import Qt
from PySide6.QtGui import QBrush, QPen

# 创建应用程序实例
应用程序 = QApplication([])

# 创建图形场景和视图
图形场景 = QGraphicsScene()
图形视图 = QGraphicsView(图形场景)
图形视图.show()

# 创建图层组
图层1 = QGraphicsItemGroup()
图层2 = QGraphicsItemGroup()
图层3 = QGraphicsItemGroup()

# 将图层组添加到场景
图形场景.addItem(图层1)
图形场景.addItem(图层2)
图形场景.addItem(图层3)

# 在图层1中添加一些椭圆
for i in range(10):
    椭圆 = QGraphicsEllipseItem(0, 0, 50, 50)
    椭圆.setBrush(QBrush(Qt.red))
    椭圆.setPen(QPen(Qt.black))
    图层1.addToGroup(椭圆)

# 在图层2中添加一些椭圆
for i in range(10):
    椭圆 = QGraphicsEllipseItem(60, 0, 50, 50)
    椭圆.setBrush(QBrush(Qt.green))
    椭圆.setPen(QPen(Qt.black))
    图层2.addToGroup(椭圆)

# 在图层3中添加一些椭圆
for i in range(10):
    椭圆 = QGraphicsEllipseItem(120, 0, 50, 50)
    椭圆.setBrush(QBrush(Qt.blue))
    椭圆.setPen(QPen(Qt.black))
    图层3.addToGroup(椭圆)

# 设置图层的 z 值，控制绘制顺序
图层1.setZValue(0)
图层2.setZValue(1)
图层3.setZValue(2)

# 设置缓存模式以优化性能
图层1.setCacheMode(QGraphicsItem.ItemCoordinateCache)
图层2.setCacheMode(QGraphicsItem.ItemCoordinateCache)
图层3.setCacheMode(QGraphicsItem.ItemCoordinateCache)

# 更新某一层时，只调用该层组的 update 方法
# 例如，更新图层2
# 图层2.update()

应用程序.exec()